The software development environments of today, such as MICROSOFT® Visual Studio, Eclipse, etc., are based on a thick client principle. In such environments, it is common to have multi-gigabyte software installations that can take hours to install before the development environment becomes usable. The machine where the software development application is installed must have enough resources to handle compilations, which can often require large amounts of RAM and other system resources. This puts a heavy burden on the local development machine.
Furthermore, users of such software development environments are not able to share their work easily with friends and/or colleagues without using some third party code sharing mechanism, such as by emailing a project to the person or using a version control system that manages the source code. One problem with emailing the project is that there can often be massive amounts of source code files involved, and the recipient of the email must have the software development application installed on their computer too. One problem with version control systems is that they are often limited to thick client installations as well, and can typically only be accessed by colleagues of a same particular company because of company security restrictions.